As computing systems have evolved over the last 15 to 20 years they have become dominated by commodity processors designed to meet the needs of a vast consumer market. For much of that time, the industry experienced extraordinary Moore's law gains in performance, as each chip generation was nearly twice the speed of the previous. In more recent years, power dissipation and other technology constraints have become a concern, and microprocessor chip vendors have undertaken efforts to develop platforms with multiple low-power, low performance cores.
Typically, microprocessors used in general computing are programmed with a sequence of machine level commands chosen from a supported set. Programs written in high-level languages such as C or C++ are converted to machine language by other programs known as compilers. This capability allows the microprocessor to run a huge variety of different programs and algorithms.
A field programmable gate array (FPGA) is an example of a reconfigurable processing element. Generally, an FPGA's circuit is programmed into it at the time of use and may be rapidly changed as frequently as desired. An FPGA traditionally is programmed in hardware languages such as VHDL and Verilog which differ significantly from high-level languages like C or C++ that often are relied upon by developers of high performance computing applications.